{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Coding with Qiskit Episode 4\n",
    "\n",
    "# Quantum Gates in Qiskit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this episode of Coding with Qiskit, we learned about quantum gates available in Qiskit and some techniques of understanding how the gates work in quantum circuits.\n",
    "\n",
    "The four representations of the action of quantum gates discussed in the video are:\n",
    "\n",
    "1. Bra-Ket notation\n",
    "2. Matrix representation\n",
    "3. Bloch sphere picture\n",
    "4. Measurement results\n",
    "\n",
    "This Jupyter notebook shows the code that was used in the video, as well as updates in the latest version of Qiskit.\n",
    "\n",
    "**Link to Episode 4:** https://www.youtube.com/watch?v=tBnWG_95F9c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"960.0\"\n",
       "            height=\"540.0\"\n",
       "            src=\"http://www.youtube.com/embed/tBnWG_95F9c\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x10d873320>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import IFrame\n",
    "IFrame(src=\"http://www.youtube.com/embed/tBnWG_95F9c\", width=1920/2, height=1080/2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. Bra-Ket notation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Throughout the literature, you will find quantum states written in the Bra-Ket notation. In this notation, the quantum states of our qubits are written as superpositions of $\\vert0\\rangle$ and $\\vert1\\rangle$.\n",
    "\n",
    "In the video, we used the particular example of the $X$ gate, whose action is \n",
    "\n",
    "$X\\vert0\\rangle = \\vert1\\rangle$\n",
    "\n",
    "$X\\vert1\\rangle = \\vert0\\rangle$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. Matrix representation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The matrix representation of the example above is given as\n",
    "\n",
    "$$\\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}\\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix} = \\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix}$$\n",
    "and\n",
    "$$\\begin{bmatrix} 0 & 1 \\\\ 1 & 0 \\end{bmatrix}\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix} = \\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The 2x2 matrix above is exactly the $X$ gate in matrix representation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is a method that you can use to determine the matrix representation of the $X$ gate. We build a circuit which contains the gate of interest and execute that circuit using the `unitary_simulator`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<qiskit.circuit.instructionset.InstructionSet at 0x136111e10>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit import *\n",
    "circuit = QuantumCircuit(1,1)\n",
    "circuit.x(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJEAAAB7CAYAAAB0B2LHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAFLklEQVR4nO3dTWgUdxjH8d++xMTWlyYsQVBUoiIkdAMKHtoG8dB2A6ke0iRVCCJSU6tCQNp66Qu13dqY1iItSE8e2g2NYcNeXKShGGM9NEF8S8U9mCIBQQQjBBLb7E4PtYq1xejT5T/jfj8wl1nYeVi+/GeG3WRCnud5AgzCrgdA8BERzIgIZkQEMyKCGRHBjIhgRkQwIyKYERHMiAhmRAQzIoIZEcGMiGBGRDAjIpgREcyICGZEBDMighkRwYyIYEZEMCMimBERzIgIZlHXAwTBnB+zTo77+8uNTo77uFiJYEZEMCMimBERzIgIZkQEMyKCGRHBjIhg5puICoWCuru7tWrVKlVUVKi+vl6Dg4NavXq1duzY4Xq8WfOmpvRHyxsqnDp9f9+dO5rp3KuZjz+VVyg4nK44fBPR9u3btX//fnV0dCibzaq1tVWbN2/W1atXtXbtWtfjzVpo7lyFX29W/vuUPM+Tl88r/8lnUlmZIvveVSjsm4/8f+OL7856enp09OhRnTx5UuvXr5ckbdiwQWfPnlU6ndaaNWscT/h4whtfU6EvLW/oZxWGR+TdvKlod5dCc8pcj1YUvogomUwqkUjcC+hvK1euVFlZmeLxuKPJnkxoboXCLc3Kd38pVT6n6FdfKPTsM67HKhrna+v4+LguXbqklpaWh167du2a6urqVF5eXrTjh0KhR25PbHpakbZWhSorizZbMbfZ8kVEkrRo0aIH9k9NTWlwcDBwpzJJKgz8pMIPvQq9+ory/Rk97U++cB5RLBaTJOVyuQf2d3V16fr160W/qPY875Hb4yj8Mqz8198o8uH7irz9ljQxIe/UUNFmK+Y2W86viWpqahSPx5VMJlVVVaXFixerr69Px48fl6RA3ZkVRn9VPnlAkXf2Khx/XpL+ujb6rkehhpeeyjszyQcrUTgc1rFjx1RXV6edO3dq27ZtisVi2rVrlyKRSGAuqr2x35T/4CNFOt5U+MUX7u0Pb2ySbt9+4tUoCEJ+fVRVe3u7zp8/rwsXLrgehZ/HPoLzlei/jIyMBOpUVsp8GdHk5KRyuVwg78xKkfML638zb9485fN512Nglny5EiFYiAhmRAQzIoIZEcGMiGBGRDDz7dceCA5WIpgREcyICGZEBDMighkRwYyIYEZEMCMimBERzIgIZkQEMyKCGRHBjIhgRkQwIyKYERHMiAhmRAQzIoIZEcGMiGBGRDAjIpgR0T9kMhk1NTWpurpa5eXlWrZsmbZs2aKLFy+6Hs23+DPqu2ZmZrR161alUiktXbpUjY2NWrBggXK5nLLZrDKZjBKJhOsxfcmX/7PRhT179iiVSmn37t06dOiQotH7H834+LgWLlxYtGPv+/zbor23xYH3ZvecOSKSNDQ0pCNHjiiRSOjw4cMPPRxlyZIljiYLBk5nkpqbm5VOp3Xu3DnV19e7HidwiEjS/PnzFYvFNDY25uT4QT+dlfzd2cTEhCYnJ7V8+XLXowRWya9Et27dUlVVlWprazU6Oup6nEAq+ZWosrJSNTU1unz5sgYGBh56/cqVKw6mCpaSX4kkqbe3V21tbYpGo9q0aZNWrFihGzdu6MyZM6qtrVV/f7/rEX2NiO46ceKEDh48qOHhYU1PT6u6ulrr1q1TZ2enGhoaXI/na0QEs5K/JoIdEcGMiGBGRDAjIpgREcyICGZEBDMighkRwYyIYEZEMCMimBERzIgIZkQEMyKCGRHBjIhgRkQwIyKYERHMiAhmRAQzIoIZEcGMiGD2J6m1xUtBLPkvAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 173.376x144.48 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "circuit.draw(output='mpl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.+0.j 1.+0.j]\n",
      " [1.+0.j 0.+0.j]]\n"
     ]
    }
   ],
   "source": [
    "simulator = Aer.get_backend('unitary_simulator')\n",
    "result = execute(circuit, backend=simulator).result()\n",
    "unitary = result.get_unitary()\n",
    "print(unitary)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to determine the quantum state at the output, you can use the `statevector_simulator`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.+0.j 1.+0.j]\n"
     ]
    }
   ],
   "source": [
    "from qiskit import *\n",
    "circuit = QuantumCircuit(1,1)\n",
    "circuit.x(0)\n",
    "simulator = Aer.get_backend('statevector_simulator')\n",
    "result = execute(circuit, backend=simulator).result()\n",
    "statevector = result.get_statevector()\n",
    "print(statevector)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see from these two results, we have determined the matrix representation of the $X$ gate, as well as its action on the $\\vert0\\rangle$ state."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3. Bloch sphere picture"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The action of a unitary quantum gate on the state of a qubit can be thought of as a rotation on the surface of the Bloch sphere, which is a sphere of radius 1."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can visualize the `statevector` output from the above code by using the following code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# in the video, we imported from qiskit.tools.visualization. \n",
    "# this part of Qiskit has been moved to qiskit.visualization, and we recommend using qiskit.visualization instead\n",
    "from qiskit.visualization import plot_bloch_multivector\n",
    "plot_bloch_multivector(statevector)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. Measurement results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final method of understanding how a gate works is by using measurement results from running a circuit with\n",
    "the gate using the `qasm_simulator`. You can do this by running the code below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "circuit = QuantumCircuit(1,1)\n",
    "circuit.x(0)\n",
    "circuit.measure([0], [0])\n",
    "simulator = Aer.get_backend('qasm_simulator')\n",
    "result = execute(circuit, backend=simulator, shots=1024).result()\n",
    "counts = result.get_counts()\n",
    "from qiskit.visualization import plot_histogram\n",
    "plot_histogram(counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see above, the result is that 100% of the 1024 shots returned 1."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For detailed information about Qiskit, check out the tutorials in the Github repository:\n",
    "\n",
    "https://github.com/Qiskit/qiskit-iqx-tutorials\n",
    "\n",
    "For a pedagogical presentation of the Bra-Ket notation and the matrix algebra involved in quantum circuits, check out our open-source `Learn Quantum Computation using Qiskit` textbook:\n",
    "\n",
    "https://community.qiskit.org/textbook/\n",
    "\n",
    "For an overview of all gates in Qiskit, see:\n",
    "\n",
    "https://quantum-computing.ibm.com/support/guides/gate-overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Version"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It's good to note the Qiskit version that was used in your work. One way to do this is print the version at the bottom of the Jupyter notebook using"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'qiskit-terra': '0.9.0',\n",
       " 'qiskit-ignis': '0.2.0',\n",
       " 'qiskit-aqua': '0.6.0',\n",
       " 'qiskit': '0.12.0',\n",
       " 'qiskit-aer': '0.3.0',\n",
       " 'qiskit-ibmq-provider': '0.3.2'}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "qiskit.__qiskit_version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2019.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_copyright"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
